#2022年省赛-程序设计题 选数异或
n, m, x = map(int, input().split())
a=[0]+list(map(int,input().split()))
# pos[i]表示在数组的前i个元素中，最近出现的满足条件的数对的位置
pos=[0]*(n+10)
mp={}
for i in range(1,n+1):
    # 如果a ^ b = x，那么b = a ^ x
    y=x^a[i]
    if mp.get(y):
        pos[i]=max(pos[i-1],mp[y])
    else:
        pos[i]=max(pos[i-1],0)
    mp[a[i]]=i

a=[]

for i in range(m):
    L,R=map(int,input().split())
    # pos[R]记录了在[1, R]区间内最近满足条件的数对的位置
    if pos[R]>=L:
        a.append('yes')
    else:
        a.append('no')

for i in range(m):
    print(a[i])
